专利摘要:
Die Erfindung betrifft einen heterogenen parallelen Multithread-Prozessor (1) mit geteilten Kontexten, welcher mehreren (M) parallel verschaltete Standardprozessorrumpfeinheitstypen (2¶p¶; pepsilon[1, ..., M]) aufweist, wobei jeweils jeder Standardprozessorrumpfeinheitstyp (2¶p¶) mindestens eine oder mehrere (K) parallel verschaltete Standardprozessorrumpfeinheiten (2¶pq¶; qepsilon[1, ..., K]) zur Befehlsausführung von Programmbefehlen verschiedener Threads (T) auweist, wobei für jeden Standardprozessorrumpfeinheitstypen (2¶p¶) N lokale Kontextspeicher (32¶pt¶) vorgesehen sind, die jeweils einen Teil eines aktuellen Prozessor-Zustandes eines Threads zwischenspeichern. Weiter weist der Multithread-Prozessor (1) mehrere (N) globale Kontextspeicher (3¶t¶; tepsilon[1, ..., N]), welche jeweils einen Teil eines aktuellen Prozessor-Zustandes eines Threads zwischenspeichern, und eine Thread-Kontrolleinheit (4) auf, durch die jede Standardprozessorrumpfeinheit (2¶pq¶) an jeden globalen Kontextspeicher (3¶t¶) schaltbar ist.
公开号:DE102004009610A1
申请号:DE200410009610
申请日:2004-02-27
公开日:2005-09-22
发明作者:Lajos Gazsi;Jinan Lin;Soenke Mehrgardt;Xiaoning Nie
申请人:Infineon Technologies AG;
IPC主号:G06F9-00
专利说明:
[0001] DieErfindung betrifft einen heterogenen parallelen Multithread-Prozessor(HPMT) mit geteilten Kontexten, welcher mehrere (M) parallel verschaltete Standardprozessorrumpfeinheitstypenaufweist, wobei jeweils jeder Standardprozessorrumpfeinheitstyp mindestenseine oder mehrere (K) parallel verschaltete Standardprozessorrumpfeinheitenzur Befehlsausführungvon Programmbefehlen verschiedener Threads aufweist, wobei für jedenStandardprozessorrumpfeinheitstypen N lokale Kontextspeicher vorgesehensind, die jeweils einen aktuellen Prozessor-Zustand eines lokalenThreads zwischenspeichern. Der Multithread-Prozessor (HPMT) weistweiter mehrere globale Kontextspeicher, welche jeweils einen aktuellenProzessor-Zustandeines globalen Threads zwischenspeichern, und eine Thread-Kontrolleinheitauf, durch die jede Standardprozessorrumpfeinheit an jeden globalenKontextspeicher schaltbar ist.
[0002] EingebetteteProzessoren und deren Architekturen werden an ihrer Rechenleistung,ihrem Leistungsverbrauch, ihrem Durchsatz, ihren Kosten und ihrerEchtzeitfähigkeitgemessen. Um den Durchsatz und die Prozessorgeschwindigkeit zu erhöhen, kommtdas Prinzip des Pipelining zum Einsatz. Die Grundidee des Pipeliningbasiert darauf, beliebige Instruktionen bzw. Programmbefehle inBearbeitungsphasen gleicher zeitlicher Dauer zu unterteilen. Eine Pipelinemit verschiedenen Verarbeitungselementen ist dann möglich, wenndie Verarbeitung einer Instruktion selbst in mehrere Phasen mitdisjunkten und nacheinander durchführbaren Prozessschritten einteilbarist. Die ursprünglichenzwei Befehlsausführungsphasendes Von-Neumann-Modells,nämlich Befehlsholungund Befehlsbearbeitung, werden dabei weiter unterteilt, da sichdiese Teilung in zwei Phasen fürein Pipelining als zu grob erweist. Die bei RISC-Prozessoren imWesentlichen angewendete Pipeline- Variante beinhaltet vier Phasen derBefehlsbearbeitung, nämlichBefehl holen (Instruction-Fetch), Befehldekodieren/Operandenholen(Instruction-Decoding/Operand-Fetch), Befehlsausführung (Execution)und Zurückschreiben(Write back).
[0003] Hinsichtlichder Befehlsbearbeitung eines Programmcodes bezeichnet ein ThreadT einen Kontrollfaden des Codes bzw. des Quellcodes bzw. Programms,wobei innerhalb eines Threads T Datenabhängigkeiten bestehen und zwischenverschiedenen Threads T schwache Datenabhängigkeiten bestehen (wie inKapitel 3 in T.Bayerlein, O. Hagenbruch: „Taschenbuch Mikroprozessortechnik", 2. Auflage FachbuchverlagLeipzig im Karl-Hanser-VerlagMünchen – Wien,ISBN 3-446-21686-3 beschrieben).
[0004] EineEigenschaft eines Prozesses ist, dass ein Prozess stets auf eineneigenen Speicherbereich zugreift. Ein Prozess besteht aus mehrerenThreads T. Demnach ist ein Thread T ein Programmteil eines Prozesses.Ein Kontext eines Threads ist der Prozessorzustand eines Prozessors,welcher diesen Thread T bzw. Programmbefehle dieses Threads bearbeitet. Demnachist der Kontext eins Threads definiert als ein temporärer Prozessorzustandwährendder Bearbeitung des Threads durch diesen Prozessor. Der Kontextwird von der Hardware des Prozessors, nämlich dem Programmzählregisterbzw. Programmcounter, dem Registerfile bzw. dem Kontextspeicher unddem dazugehörigenStatusregister gehalten.
[0005] Während derAbarbeitung eines Threads durch einen Prozessor, kann ein ThreadT temporär blockiertwerden. Eine temporäreBlockierung eines Threads T kann verschiedenen Ursachen haben, beispielsweisedurch eine Latenzzeit beim Zugriff auf einen externen Speicher bzw.auf ein internes Register.
[0006] EinetemporäreBlockierung eines Prozessors liegt vor, wenn die Prozessorpipelinekeinen weiteren Programmbefehl eines Threads T verarbeiten kann.
[0007] Umdas Problem der temporärenBlockierung zu lösen,werden bekanntermaßensogenannte Multithread-Prozessoren bereitgestellt. Ein Multithread-Prozessorist ein Prozessor, welcher die Abarbeitung mehrerer Kontexte hardware-technischbereitstellt, indem fürdie mehreren Kontexte jeweils ein Programmzählregister, eine Registerbankund ein Statusregister vorgesehen sind.
[0008] Gemäß einerWeiterbildung eines Multithread-Prozessors, nach einer zum Anmeldetagvon der Anmelderin nichtveröffentlichtenDruckschrift, zeigt 1 einBlockschaltbild eines parallelen Multithread-Prozessors mit geteiltenKontexten. Die dem parallelen Multithread-Prozessor mit geteiltenKontexten zugrunde liegende Idee besteht darin, die N Threads bzw.ihre entsprechenden N Kontextspeicher nicht wie bei bekannten Multithread-Prozessorenin Sätzezu unterteilen, wobei jeder dieser Sätze direkt mit einer zugehörigen Standardprozessorrumpfeinheitdirekt verbunden bzw. verdrahtet ist, sondern die Kontextspeicherderart bereitzustellen, dass jede Standardprozessorrumpfeinheitauf jeden Kontextspeicher schaltbar ist.
[0009] Dabeiwerden die Programmbefehle der N Threads bzw. der N Kontextspeicherdynamisch an die M Standardprozessorrumpfeinheiten verteilt. Die NKontextspeicher und M Standardprozessorrumpfeinheiten werden durchMultiplexer miteinander gekoppelt. Bei der Ausführung des jeweiligen Programmbefehlsin jeder Pipelinestufe eines jeden jeweiligen Prozessors bzw. jederjeweiligen Standardprozessorrumpfeinheit wird der entsprechende Kontext über einenMultiplexer ausgewählt.Jeder Programmbefehl innerhalb der Standardprozessorrumpfeinheitbenötigtden entsprechenden Kontext. Fürdie Auswahl des entsprechenden Kontextes dienen Steuersignale <t,p>, wobei t die Threadnummer bzw.Threadkennziffer und p die Standardprozessorrumpfnummer bzw. Nummerder Standardprozessorrumpfeinheit bezeichnet.
[0010] Derparallele Multithread-Prozessor PMT nach 1 ist mit einem Befehlspeicher BS undeinem Datenbus DB gekoppelt. Des Weiteren enthält der Multithread-ProzessorPMT M Standardprozessorrumpfeinheiten SPRE, N Kontextspeicher KS, eineThreadkontrolleinheit TK, M Prozessorkontrolleinheiten PKE, N BefehlszwischenspeicherBZS, NxM Multiplexer NxM MUX und MxN Multiplexer MxN MUX.
[0011] JedeStandardprozessorrumpfeinheit SPRE weist eine Befehldecodier/Operandenholeinheit BD/OHE,eine BefehlsausführungseinheitBAE und eine ZurückschreibeeinheitZSE auf, wobei diese Einheiten zur Bearbeitung von Programmbefehlen nacheinem Pipelineverfahren angeordnet sind.
[0012] DieBefehlsholeinheit BHE weist einen MxN Multiplexer MxN MUX, N DatenleitungenDL, N Befehlszwischenspeicher BZS, weitere N Datenleitungen DL undeinen NxM Multiplexer NxM MUX auf.
[0013] Für jede Standardprozessorrumpfeinheit SPREist eine zugehörigeProzessorkontrolleinheit PKE vorgesehen. Eine ProzessorkontrolleinheitPKE steuert die entsprechende Standardprozessorrumpfeinheit SPREdurch interne Steuersignale. Ein erstes internes Steuersignal intSS' für die Befehldekodier/Operandenholeinheitsteuert dabei die Befehldekodier/Operandenholeinheit BD/OHE. Einzweites internes Steuersignal intSS'' für die Befehlsausführungseinheitsteuert die Befehlsausführungseinheit BAEund ein drittes internes Steuersignal intSS''' für die Zurückschreibeeinheitsteuert die ZurückschreibeeinheitZSE.
[0014] JederKontextspeicher KS weist ein Programmzählregister PZR, eine RegisterbankRB und ein Statusregister SR auf. Das Programmzählregister PZR speichert einenProgrammzählerfür einen ThreadT zwischen. Übereinen NxM Multiplexer NxM MUX werden die Inhalte der N Programmzählregister PZRvon N Threads T auf einen M-kanaligen Adressbus AB gelegt.
[0015] Diedurch die Dateninhalte der Programmzählregister PZR refferenziertenM Programmbefehle werden übereinen M-kanaligen Datenbus DB aus dem Befehlsspeicher BS von derBefehlsholeinheit BHE ausgelesen. Die ausgelesenen Dateninhalte werden über einenMxN Multiplexer MxN MUX zu N Befehlszwischenspeicher BZS übertragen.Es ist für jedender N Threads T ein zugehörigerBefehlszwischenspeicher BZS vorgesehen. Über einen NxM Multiplexer NxMMUX werden aus den N Befehlszwischenspeichern BZS M Programmbefehleauf M Datenleitungen DL gelegt. Die M Programmfehle auf den DatenleitungenDL werden auf die M Standardprozessorrumpfeinheiten SPRE verteilt.
[0016] DieBefehldekodier/Operandenholeinheit BD/OHE-i der Standardprozessorrumpfeinheit SPRE-idekodiert beispielsweise einen Programmbefehl des Threads T-j. Derdekodierte Programmbefehl des Threads T-j enthält unter anderem Adressen von Operanden,die fürdie nachfolgende Befehlsausführungbenötigtwerden. Die adressierten Dateninhalte der Operanden sind in einemzum Thread T-j dazugehörigenKontextspeicher KS-j gespeichert, genauer in der Registerbank RB-jdes dazugehörigenKontextspeichers KS-j. Übereinen NxM Multiplexer NxM MUX werden die Dateninhalte der Operandenaus der Registerbank RB-j des Kontextspeichers KS-j zu der Befehldekodier/OperandenholeinheitBD/OHE-i der Standardprozessorrumpfeinheit SPRE-i übertragen,wobei der NxM Multiplexer NxM MUX von der Thread-Kontrolleinheit TK mittels des Multiplexersteuersignals <t,p>[e] gesteuertwird. Die Multiplexer werden überdie Multiplexersteuersignale <t,p> derart gesteuert,sodass der entsprechenden Kontextspeicher KS-j an die entsprechendePipelinestufe der entsprechenden Standardprozessorrumpfeinheit SPRE-igeschaltet wird.
[0017] DieBefehlsausführungseinheitBAE-i der Standardprozessorrumpfeinheit SPRE-i führt die im Programmbefehl desThreads T-j enthaltene arithmetische-logische Operation mit denaus der Registerbank RB-j geholten Operanden aus.
[0018] Nachdemdie arithmetisch-logische Operation mit den geholten Operanden durchgeführt wurde, wirddas Ergebnis der Operation bzw. Zusatzzeichen bzw. Flags von derZurückschreibeeinheitZSE-i auf eine Datenleitung DL gelegt. Dieselben Dateninhalte werdenpotenziell im Falle eines Speicherbefehls zusätzlich auf eine weitere DatenleitungDL gelegt. Die M weiteren Datenleitungen DL sind für die Kopplung desMultithread-ProzessorsPMT mit dem Datenbus DB vorgesehen. Die Dateninhalte der M Ergebnisse derM Standardprozessorrumpfeinheit SPRE werden über den Datenbus DB an externeSpeicher übertragen.
[0019] Über einemMxN Multiplexer MxN MUX wird das Ergebnis der Operation bzw. Zusatzzeichenbzw. Flags von der ersten Datenleitung DL genommen und das Ergebnisder arithmetisch-logischen Operation in die Registerbank RB-j desKontextspeichers KS-j und Zusatzzeichen in das Statusregister SR-j desKontextspeichers KS-j übertragen.Die Dateninhalte der N Statusregister SR werden mittels eines NxMMultiplexers NxM MUX an die M Prozessorkontrolleinheiten PKE übertragen.Die Prozessorkontrolleinheit PKE-i berechnet aus den Dateninhaltender Statusregister SR interne Steuersignale, nämlich das interne Steuersignalfür dieBefehldekodier/Operandenholeinheit intSS', das interne Steuersignal für die BefehlsausführungseinheitintSS'' und das interne Steuersignalfür dieZurückschreibeeinheitintSS'''.
[0020] DieThread-Kontrolleinheit TK steuert über die Multiplexersteuersignale <t,p>[a]-t,p>[f] dieNxM Multiplexer NxM MUX und die MxN Multtplexer MxN MUX. Das Multiplexersteuersignal <t,p> gibt an, welcher ThreadT-j durch welche Standardprozessorrumpfeinheit SPRE-i bearbeitetwird.
[0021] EinNxM Multiplexer NxM MUX hat die Funktion, die Daten eines N-kanaligenDatenbusses auf einen M-kanaligen Datenbus zu legen.
[0022] EinMxN Multiplexer MxN MUX hat die Funktion, die Daten eines M-kanaligenDatenbusses auf einen N-kanaligen Datenbus zu legen.
[0023] DieM internen Ereignissteuersignale ESS' beinhalten unter anderem Daten über blockierte ThreadsT, interne Interrupts, Wartezeiten und Exception-Ereignis-Signale,und stellen diese Daten der Thread-Kontrolleinheit TK bereit.
[0024] ExterneEreignissteuersignale ESS'' werden an die Thread-KontrolleinheitTK von externen Einrichtungen übertragen.Beispiele hierfürsind externe Interrupts, welche von externen Einrichtungen generiertwerden.
[0025] Eineparallele Multithread-Prozessorarchitektur weist Nachteile auf,wenn eine Aufgabe zu bearbeiten ist, die den Einsatz verschiedenerProzessoren bzw. verschiedener Prozessortypen bedarf. Eine solcheAufgabe wird heterogene Aufgabe genannt, da sie aus unterschiedlichenThreads besteht, die vorzugsweise von Prozessoren unterschiedlichen Typs(z. B. General-Purpose Processor, Protokollprozessor, usw.) bearbeitetwerden sollten.
[0026] Einparalleler Multithread-Prozessor ist demnach ungeeignet, um alsMultilayer-Network-Prozessor eingesetzt zu werden.
[0027] Auchdie Parallelschaltung von mehreren parallelen Multithread-Prozessorenwürde obengenanntes Problem nicht lösen,da sich eine Zwischenprozessorkommunikation zwischen den einzelnen parallelenMultithread-Prozessoren nachteilig auf die Auslastung der einzelnenparallelen Multithread-Prozessoren und des Gesamtsystems auswirken würde. Beiparallel geschalteten parallelen Multithread-Prozessoren wäre der gesamte Kontext bzw.alle Kontextspeicher wiederum nicht für jede Standardprozessorrumpfeinheitzugreifbar, was die Blockierwahrscheinlichkeit der parallel geschaltetenparallelen Multithread-Prozessoren erhöhen würde.
[0028] Esist daher Aufgabe der vorliegenden Erfindung, einen heterogenenparallelen Multithread-Prozessor zu schaffen, der eine minimaleBlockierwahrscheinlichkeit und einen hohen Durchsatz auch bei heterogenenAufgaben aufweist.
[0029] Dieder vorliegenden Erfindung zugrunde liegende Idee besteht im Wesentlichendarin, einen Multithread-Prozessor bereit zu stellen, der verschiedeneTypen von parallel verschalteten einzelnen Prozessoren bzw. verschiedeneStandardprozessorrumpfeinheitstypen aufweist, die aber alle aufdenselben Kontext bzw. auf dieselben Kontextspeicher zugreifen können. EinMultithread-Prozessor, der wenigstens zwei verschiedene Standardprozessorrumpfeinheitstypenaufweist, wird als heterogener Multithread-Prozessor bezeichnet.Bezüglichder gestellten Aufgabe bzw. des abzuarbeitenden Threads steuertder Multithread-Prozessor, welcher Prozessortyp bzw. welcher Standardprozessorrumpfeinheitstypvorzugsweise an den gemeinsamen Kontext bzw. Kontextspeicher geschaltetwird. Gemeinsame Kontextspeicher werden auch als globale Kontextspeicherbezeichnet und zeichnen sich dadurch aus, dass alle verschiedenenProzessortypen des heterogenen Multithread-Prozessors an diese schaltbar sind.Threads, die von jedem Standardprozessorrumpfeinheitstypen des Multithread-Prozessorsabarbeitbar sind, werden als globale Threads bezeichnet. Im Gegensatzdazu werden Kontextspeicher, die nur an einem spezifischen Standardprozessorrumpfeinheitstypendes Multithread-Prozessors schaltbarsind, als lokale Kontextspeicher bezeichnet. Das Vorsehen lokalerKontextspeicher ist sinnvoll, da spezielle Aufgaben bzw. lokaleThreads nur von einem spe zifischen Standardprozessorrumpfeinheitstypenin sinnvoller Weise abarbeitbar sind.
[0030] Inder vorliegenden Erfindung wird das oben erörterte Problem insbesonderedadurch gelöst,dass ein heterogener paralleler Multithread-Prozessor mit geteiltenKontexten bereitgestellt wird mit: (a) mehreren(M) parallel verschalteten Standardprozessorrumpfeinheitstypen,wobei jeweils jeder Standardprozessorrumpfeinheitstyp mindestens eineoder mehrere parallel verschaltete Standardprozessorrumpfeinheitenzur Befehlsausführung vonProgrammbefehlen verschiedener Threads aufweist, wobei für jedenStandardprozessorrumpfeinheitstypen N lokale Kontextspeicher vorgesehensind, die jeweils einen Teil eines aktuellen Prozessor-Zustandeseines Threads zwischenspeichern; (b) mehreren (N) globalen Kontextspeichern, welche jeweils einenTeil eines aktuellen Prozessor-Zustand eines Threads zwischenspeichern; (c) und mit einer Thread-Kontrolleinheit, durch die jede Standardprozessorrumpfeinheitan jeden globalen Kontextspeicher schaltbar ist.
[0031] EinVorteil der vorliegenden Erfindung ist, dass durch die Bereitstellungverschiedener Standardprozessorrumpfeinheitstypen (z. B. General-Purpose-Processor,Protokollprozessor, etc.), welche auf gemeinsame Kontextspeicherbzw. globale Kontextspeicher zugreifen, auch Aufgaben bzw. Threadsabarbeitbar sind, die verschiedene Typen von Standardprozessorrumpfeinheitenvorteilhafterweise bedingen. Ein weiterer Vorteil ist, dass dadurch dieAuslastung der globalen Kontextspeicher und der Ressourcen des Multithread-Prozessorserhöhtwird. Außerdemwird durch das Zugreifen verschiedener Standardprozessorrumpfeinheitstypenauf einen gemeinsamen Kontext bzw. durch das Schalten an globalenKontextspeicher die Zwischenkommunikation zwischen den einzelnenProzessortypen minimiert. Eine minimierte Zwischenkommunikationzwischen den Prozessortypen führtebenso zu einer besseren Auslastung der Multithread-Prozessorressourcen undzu einer höherenPerformance des Multithread-Prozessors. Außerdem wird durch den Einsatzverschiedener Standardprozessorrumpfeinheitstypen die Blockierwahrscheinlichkeitdes Gesamtsystems minimiert.
[0032] Inden Unteransprüchenfinden sich vorteilhafterweise Weiterbildungen und Verbesserungen desheterogenen parallelen Multithread-Prozessors (HPMT) mit geteiltenKontexten.
[0033] Gemäß einerbevorzugten Weiterbildung weist jede Standardprozessorrumpfeinheiteine Befehldekodier/Operandenholeinheit zur Dekodierung eines Programmbefehlsund zum Holen innerhalb des Programmbefehls adressierter Operandenauf.
[0034] Gemäß einerweiteren bevorzugten Weiterbildung weist jede Standardprozessorrumpfeinheit eineBefehlsausführungseinheitzum Ausführendes dekodierten Programmbefehls auf.
[0035] Gemäß einerweiteren bevorzugten Weiterbildung weist jede Standardprozessorrumpfeinheit eineZurückschreibeeinheitzum Zurückschreiben vonOperationsergebnissen der ausgeführtenProgrammbefehle auf.
[0036] Gemäß einerweiteren bevorzugten Weiterbildung ist jede Standardprozessorrumpfeinheitmit einer zugehörigenProzessorkontrolleinheit gekoppelt.
[0037] Gemäß einerweiteren bevorzugten Weiterbildung weist jeder globale Kontextspeicherein Programmzählregisterzum Zwischenspeichern eines Programmzählers, eine Registerbank zumZwischenspeichern von Operanden und ein Statusregister zum Zwischenspeichernvon Statusflags auf.
[0038] Gemäß einerweiteren bevorzugten Weiterbildung ist die Anzahl (K·M) derStandardprozessorrumpfeinheiten kleiner oder gleich der Anzahl (N)der globalen Kontextspeicher.
[0039] EinVorteil dieser bevorzugten Weiterbildung ist, dass hierdurch zujeder Zeit genügendProgrammbefehle von verschiedenen Threads für die (K·M) Standardprozessorrumpfeinheitenzur Verfügungstehen. Hierdurch entstehen keine bzw. minimale Latenzzeiten.
[0040] Gemäß einerweiteren bevorzugten Weiterbildung ist mindestens ein Befehlszwischenspeicher vorgesehen,welcher oder welche in N, adressierbar durch die Thread-Kontrolleinheit,Befehlszwischenspeicher teilbar ist bzw. sind, wobei jeder der NBefehlszwischenspeicher an jede Standardprozessorrumpfeinheit schaltbarist.
[0041] EinVorteil dieser bevorzugten Weiterbildung ist, dass durch die N Befehlszwischenspeicherzu jeder Zeit Programmbefehle der N Threads für die (K·M) Standardprozessorrumpfeinheitenzur Verfügungstehen, sodass die Blockierwahrscheinlichkeit aufgrund verringerterWartezeiten minimiert wird.
[0042] Gemäß einerweiteren bevorzugten Weiterbildung sind die Befehlszwischenspeicherzum Auslesen von Programmbefehlen durch die Thread-Kontrolleinheitan einen oder mehrere Befehlsspeicher schaltbar, wobei die aus demBefehlsspeicher ausgelesenen Programmbefehle durch die Programmzähler derProgrammzählregisterder globalen Kontextspeicher adressiert sind.
[0043] Gemäß einerweiteren bevorzugten Weiterbildung sind gleichzeitig bis zu (K·M) Programmbefehleaus den Befehlszwischenspeichern auslesbar.
[0044] Gemäß einerweiteren bevorzugten Weiterbildung geben die Standardprozessorrumpfeinheiten dieverarbeiteten Daten übereinen Datenbus an einen Datenspeicher ab.
[0045] Gemäß einerweiteren bevorzugten Weiterbildung bearbeitet jede Standardprozessorrumpfeinheitdie ihr von der Thread- Kontrolleinheitzugeschalteten Programmbefehle sequenziell in einem Pipeline-Verfahren.
[0046] Gemäß einerweiteren bevorzugten Weiterbildung bearbeitet jede Standardprozessorrumpfeinheiteinen zugeschalteten Programmbefehl, falls dieser kein Datenzugriffsbefehlist, innerhalb einer vorbestimmten Anzahl von Taktzyklen.
[0047] EinVorteil dieser bevorzugten Weiterbildung ist, dass durch die vorbestimmteAnzahl von Taktzyklen zur Bearbeitung eines Programmbefehls die Echtzeitfähigkeitdes Gesamtsystems gewährleistet ist.
[0048] Gemäß einerweiteren bevorzugten Weiterbildung entspricht die Anzahl der vorgesehenenBefehlszwischenspeicher der Anzahl (N) der globalen Kontextspeicher,wobei jeder Befehlszwischenspeicher durch eine entsprechende Thread-Kennziffer ausgewählt wird,sodass fürjeden Thread bzw. Kontextspeicher ein eigener Befehlszwischenspeicher bereitgestelltist, wobei der Befehlszwischenspeicher vorzugsweise nach der FIFO-Organisation (FirstIn – FirstOut) Programmbefehle zwischenspeichert und weiterleitet.
[0049] Dieshat den Vorteil, dass die Programmbefehle eines jeden Threads vorden Standardprozessorrumpfeinheiten geordnet vorliegen. Dadurchwird die Schaltzeit bei einem Threadwechsel einer Standardprozessorrumpfeinheitminimiert.
[0050] Gemäß einerweiteren bevorzugten Weiterbildung empfängt die Thread-Kontrolleinheiteingangsseitig Ereignissteuersignale, zwischenspeichert interneZuständeund erzeugt ausgangsseitig Multiplexersteuersignale.
[0051] EinVorteil dieser bevorzugten Weiterbildung ist, dass durch die Adressierungder ausgelesenen Programmbefehle durch die Programmzählregister derglobalen Kontextspeicher und deren Steuerung durch die Thread-Kontrolleinheitmittels der Mul tiplexersteuersignale das Füllen des Befehlszwischenspeichersdurch die Thread-Kontrolleinheit taktzyklussensitiv gesteuert wird,d. h. die Steuerung erfolgt derart, dass in jedem Taktzyklus jedePipelinestufe einer jeden Standardprozessorrumpfeinheit mit dem entsprechendenglobalen Kontextspeicher angeschlossen ist. Die zentrale Steuerungdurch die Thread-Kontrolleinheitermöglichtein optimiertes Füllender Befehlszwischenspeicher und somit eine Minimierung von Blockierwahrscheinlichkeiten.
[0052] Gemäß einerweiteren bevorzugten Weiterbildung umfassen die Ereignissteuersignaleinterne Ereignissteuersignale und externe Ereignissteuersignale.
[0053] Gemäß einerweiteren bevorzugten Weiterbildung werden die internen Ereignissteuersignale vonden Standardprozessorrumpfeinheiten erzeugt.
[0054] EinVorteil dieser bevorzugten Weiterbildung ist, dass dadurch die Thread-KontrolleinheitDaten darüberempfängt,in welchen Betriebsmodi sich die einzelnen Standardprozessorrumpfeinheitenbefinden, sodass die Thread-Kontrolleinheit auf die verschiedenenBetriebsmodi der einzelnen Standardprozessorrumpfeinheiten entsprechendreagieren kann. Aus diesen Daten generiert die Thread-Kontrolleinheitdie Multiplexersteuersignale, welche taktzyklussensitiv an die entsprechendenMultiplexer zur Steuerung der Multiplexer übertragen werden.
[0055] Gemäß einerweiteren bevorzugten Weiterbildung werden die externen Ereignissteuersignale vonexternen Einrichtungen wie z. B. einem Interrupt oder externen Speichernerzeugt.
[0056] Gemäß einerweiteren bevorzugten Weiterbildung ist jeder Standardprozessorrumpfeinheitstyp einTeil eines DSP-Prozessors,eines Protokollprozessors oder eines Universalprozessors (General-Purpose-Processor).
[0057] Gemäß einerweiteren bevorzugten Weiterbildung ist die Befehlsausführungseinheiteiner Standardprozessorrumpfeinheit eine arithmetisch-logische Einheit(ALU) oder eine Adressengeneratoreinheit (AGU).
[0058] Gemäß einerweiteren bevorzugten Weiterbildung wird eine Befehlsholeinheit durcheinen (K·M)xNMultiplexer, N Datenleitungen, N Befehlszwischenspeichern, weiterenN Datenleitungen und einem Nx(K·M) Multiplexer ausgebildet.
[0059] Gemäß einerweiteren bevorzugten Weiterbildung dekodiert die Befehldekodier/Operandenholeinheitden Programmbefehl und holt zur weiteren Bearbeitung potenziellinnerhalb des Programmbefehls adressierte Operanden aus den mittelsder Multiplexersteuersignale selektierten globalen Kontextspeichernoder aus dem lokalen Kontextspeicher.
[0060] Gemäß einerweiteren bevorzugten Weiterbildung weist die Thread-Kontrolleinheitein Schaltnetzwerk auf, welches die Thread-Kontrolleinheit in Abhängigkeitder Ereignissteuersignale ansteuert. Dabei unterstützt dieThread-Kontrolleinheit folgende Funktionalitäten: Die Thread-Kontrolleinheitentscheidet, welche Threads abgearbeitet werden, sodass Programmbefehledieser Threads von der Befehlsholeinheit aus dem Befehlsspeichergeholt werden. Um mehrere Programmbefehle von mehreren Threads gleichzeitigvon der Befehlsholeinheit aus dem Befehlsspeicher zu holen, stelltdie Thread-Kontrolleinheit die entsprechenden Threadnummern t, dieentsprechenden Typenkennziffern p und die entsprechenden Standardprozessorrumpfeinheitskennziffernq bereit und generiert daraus die Multiplexersteuersignale.
[0061] Gemäß einerweiteren bevorzugten Weiterbildung weist das Schaltnetzwerk derThread-Kontrolleinheit mindestens einen Threadkennziffer-Zwischenspeicherauf, welcher eine Warte schlange abzuarbeitender Threads speichert,wobei füreinen Thread mindestens die Threadkennziffer und der entsprechendeThreadzustand (Ready, Waiting) vorgesehen sind.
[0062] Gemäß einerweiteren bevorzugten Weiterbildung weist das Schaltnetzwerk derThread-Kontrolleinheit mindestens einen Standardprozessorrumpfnummer-Zwischenspeicherauf, welcher die Typenkennziffer und die Standardprozessorrumpfeinheitskennzifferzwischenspeichert, wobei die Thread-Kontrolleinheit mittels der Typenkennziffer undder Standardprozessorrumpfeinheitskennziffer eine entsprechendeStandardprozessorrumpfeinheit zur Abarbeitung von Programmbefehlenadressiert.
[0063] Gemäß einerweiteren bevorzugten Weiterbildung bilden die Typenkennziffer unddie Standardprozessorrumpfeinheitskennziffer eine Standardprozessorrumpfeinheitsnummeraus.
[0064] EinVorteil dieser bevorzugten Weiterbildung ist, dass durch die ausgebildeteStandardprozessorrumpfeinheitsnummer jede Standardprozessorrumpfeinheiteines jeden Standardprozessorrumpfeinheitstypen eindeutig adressierbarist.
[0065] Gemäß einerweiteren bevorzugten Weiterbildung ist jeweils der Threadkennziffer-Zwischenspeicherund der Standardprozessorrumpfnummer-Zwischenspeicher als ein FIFO-Speicher(First In – FirstOut) ausgebildet.
[0066] Gemäß einerweiteren bevorzugten Weiterbildung wird die Threadkennziffer, welcheeinen bestimmten Thread referenziert, in Abhängigkeit der Ereignissteuersignalein dem Threadkennziffer-Zwischenspeicher der Thread-Kontrolleinheitzwischengespeichert, falls der bestimmte Thread von keiner Standardprozessorrumpfeinheitbearbeitet wird.
[0067] Gemäß einerweiteren bevorzugten Weiterbildung werden höchstens N Threadkennziffernin Abhängigkeitder Ereignissteuer signale mittels des Schaltnetzwerkes aus dem Threadkennziffer-Zwischenspeicherzur Bereitstellung von N geholten Threadkennziffer und zur Abarbeitungvon Programmbefehlen der N Threads geholt.
[0068] Gemäß einerweiteren bevorzugten Weiterbildung adressiert die Standardprozessorrumpfeinheitsnummereine bestimmte Standardprozessorrumpfeinheit und wird in Abhängigkeitder Ereignissteuersignale in dem Standardprozessorrumpfeinheitsnummer-Zwischenspeicherzwischengespeichert, falls keine Programmbefehle eines Threads vonder entsprechenden Standardprozessorrumpfeinheit bearbeitet werden.
[0069] Gemäß einerweiteren bevorzugten Weiterbildung werden höchsten (K·M) Standardprozessorrumpfeinheitsnummernin Abhängigkeitder Ereignissteuersignale mittels des Schaltnetzwerkes aus dem Standardprozessorrumpfeinheitsnummer-Zwischenspeichergeholt, sodass Programmbefehle durch die mittels der Standardprozessorrumpfeinheitsnummer adressiertenStandardprozessorrumpfeinheiten abgearbeitet werden.
[0070] Gemäß einerweiteren bevorzugten Weiterbildung generiert die Thread-Kontrolleinheitmittels der aus dem Thread-Kennziffer-Zwischenspeicher geholten Threadkennzifferund der aus dem Standardprozessorrumpfeinheitsnummer-Zwischenspeichergeholten Standardprozessorrumpfeinheitsnummern ein Multiplexersteuersignal,sodass die Programmbefehle des mittels der geholten Threadkennzifferreferenzierten Thread durch die mittels der geholten Standardprozessorrumpfeinheitsnummer referenziertenStandardprozessorrumpfeinheiten abgearbeitet werden.
[0071] Gemäß einerweiteren bevorzugten Weiterbildung steuert das Multiplexersteuersignalzum jeweiligen entsprechenden Taktzyklus die Nx(K·M) Multiplexerund die (K·M)xNMultiplexer jeweils dann, wenn sich die Adresse des Programmbefehlsbzw. der Programmbefehl des mittels der Threadkennziffer referen ziertenThreads, welcher durch die mittels der Standardprozessorrumpfeinheitsnummerreferenzierten Standardprozessorrumpfeinheiten abgearbeitet wird,an der entsprechenden Stelle des Multithread-Prozessors befindet.
[0072] Gemäß einerweiteren bevorzugten Weiterbildung sind Inhalte eines globalen Kontextspeichers vonjeder Standardprozessorrumpfeinheit eines jeden Standardprozessorrumpfeinheitstypenabarbeitbar und Inhalte eines lokalen Kontextspeichers sind ausschließlich vonden Standardprozessorrumpfeinheiten des mit dem lokalen Kontextspeicher gekoppeltenStandardprozessorrumpfeinheitstypen abarbeitbar.
[0073] Gemäß einerweiteren bevorzugten Weiterbildung weist ein lokaler Kontextspeichereine lokale Registerbank zum Zwischenspeichern von Operanden undein lokales Statusregister zum Zwischenspeichern von Statusflagsauf.
[0074] Ausführungsbeispieleder Erfindung sind in den Zeichnungen dargestellt und in der nachfolgendenBeschreibung nähererläutert.Gleiche Bezugszeichen in den Figuren bezeichnen gleiche oder funktionsgleicheElemente.
[0075] Eszeigen:
[0076] 1 einBlockschaltbild eines parallelen Multithread-Prozessors mit geteilten Kontexten;
[0077] 2 einBlockschaltbild eines heterogenen parallelen Multithread-Prozessorsmit geteilten Kontexten nach der vorliegenden Erfindung; und
[0078] 3 einschematisches Blockschaltbild der Thread-Kontrolleinheit des erfindungsgemäßen heterogenenparallelen Multithread-Prozessors mit geteilten Kontexten.
[0079] Obwohldie vorliegende Erfindung nachfolgend mit Bezug auf Prozessorenbzw. Mikroprozessoren bzw. deren Architekturen beschrieben wird,ist sie nicht darauf beschränkt,sondern auf vielfältige Weiseeinsetzbar sind.
[0080] 2 zeigtein Blockschaltbild eines heterogenen parallelen Multithread-Prozessorsmit geteilten Kontexten nach der vorliegenden Erfindung. Dabei bezeichnetBezugszeichen 1 den heterogenen parallelen Multithread-Prozessor,welcher mit einem Befehlsspeicher 7 und einem Datenbus 8 gekoppelt ist.Des Weiteren enthältder Multithread-Prozessor 1 M verschiedene Standardprozessorrumpfeinheitstypen 2p , wobei p∊[1, ..., M] ist.Jeder Standardprozessorrumpfeinheitstyp 2p weistein oder mehrere K parallel verschaltete Standardprozessorrumpfeinheiten 2pq auf, wobei q∊[1, ...,M]ist. Jeder Standardprozessorrumpfeinheitstyp 2p istmit N lokalen Kontextspeichern 32pt gekoppelt.Weiter weist der Multithread-Prozessor 1 M globale Kontextspeicher 3t auf,wobei t∊[1, ..., N] ist. Jede Standardprozessorrumpfeinheit 2pq ist mit einer Prozessorkontrolleinheit 5pq gekoppelt. Weiter weist der Multithread-Prozessor 1N Befehlszwischenspeicher 6t , Nx(K· M) Multiplexer 10 und(K·M)xNMultiplexer 11 auf.
[0081] DieAnzahl K der Standardprozessorrumpfeinheiten 2pq einesbestimmten Standardprozessorrumpfeinheitstypen 2p istunabhängigvon der Anzahl K der Standardprozessorrumpfeinheiten 2pq eines jeden anderen Standardprozessorrumpfeinheitstypen 2p . Die Anzahl M verschiedener Standardprozessorrumpfeinheitstypen 2p ist frei konfigurierbar, die AnzahlK der Standardprozessorrumpfeinheiten 2pq einesbestimmten Standardprozessorrumpfeinheitstypen 2p istfrei konfigurierbar. So kann beispielsweise der Multithread-Prozessor 1 vondem Standardprozessorrumpfeinheitstypen 2, (p=1), ausgebildetals ein DSP-Prozessor, zwei Einheiten 211 , 212 und von dem Standardprozessorrumpfeinheitstypen 22 (p=2), ausgebildet als ein Protokoll-Prozessor, dreiEinheiten 221 , 222 223 aufweisen. So sind N, M, K hardware-technischeinzurichtende maximale An zahlen für den Multithread-Prozessor 1 undt,p,q sind Variablen, um die einzelnen Einheiten innerhalb des Multithread-Prozessor 1 zuadressieren.
[0082] JedeStandardprozessorrumpfeinheit 2pq weisteine Befehldekodier/Operandenholeinheit 2pq', eine Befehlsausführungseinheit 2pq'' und eine Zurückschreibeeinheit 2pq''' auf, wobei die Befehldekodier/Operandenholeinheit 2pq',die Befehlsausführungseinheit 2pq'' und die Zurückschreibeeinheit 2pq''' zur Bearbeitung von Befehlen nacheinem Pipelineverfahren angeordnet sind.
[0083] DieBefehlsholeinheit 17 weist einen (K·M)xN Multiplexer 11,N Datenleitungen 144 , N Befehlszwischenspeicher 6t , weitere N Datenleitungen 145 und einen Nx(K·M) Multiplexer 10 auf.
[0084] DieProzessorkontrolleinheit 5pq steuertdie gekoppelte Standardprozessorrumpfeinheit 2pq durchinterne Steuersignale 12pq', 12pq'', 12pq'''. Ein erstes internes Steuersignal 12pq' für die Befehldekodier/Operandenholeinheitsteuert dabei die Befehldekodier/Operandenholeinheit 12pq'.Ein zweites internes Steuersignal 12pq'' für die Befehlsausführungseinheitsteuert die Befehlsausführungseinheit 2pq'' und ein drittesinternes Steuersignal 12pq''' für die Zurückschreibeeinheitsteuert die Zurückschreibeeinheit 2pq'''.
[0085] Jederglobale Kontextspeicher 3t weistein Programmzählregister 3t',eine Registerbank 3t'' und einStatusregister 3t''' auf. Das Programmzählregister 3t' speicherteinen Programmzählerfür einen ThreadT. Übereinen Nx(K·M)Multiplexer 10 werden die Inhalte der N Programmzählregister 3t' derN Threads T auf einen (K·M)-kanaligenAdressbus 16 gelegt.
[0086] Diedurch die Dateninhalte der Programmzählregister 3t' referenzierten(K·M)Programmbefehle von Threads T werden über einen (K·M)-kanaligen Datenbus 13 ausdem Befehlsspeicher 7 von der Befehlholeinheit 17 ausgelesen.Die ausgelesenen Da teninhalte werden über einen (K·M)xN Multiplexer 11 zuN Befehlszwischenspeichern 6t übertragen.Es ist fürjeden der N Threads T ein zugehörigerBefehlszwischenspeicher 6t vorgesehen. Über einen Nx(K·M) Multiplexer 10 werdenaus den N Befehlszwischenspeichern 6t (K·M) Programmbefehleauf (K·M)Datenleitungen 141 gelegt. Die(K·M)Programmbefehle, die auf die Datenleitungen 141 gelegt sind,werden auf die (K·M)Standardprozessorrumpfeinheiten 2pq verteilt.
[0087] Dieglobalen Kontextspeicher 3t speichern Teilevon Threads bzw. Threads typunspezifisch. Im Gegensatz dazu speicherndie lokalen Kontextspeicher 32pt Teilevon Threads typspezifisch. Der lokale Kontextspeicher 32pt weist eine lokale Registerbank 32pt'' zum Zwischenspeichernvon Operanden und ein lokales Statusregister 32pt''' zumZwischenspeichern von Statusflags auf. Die lokalen Kontextspeicher 32pt sind sowohl eingangs- als auch ausgangsseitigmit dem entsprechenden Standardprozessorrumpfeinheitstypen 2p mittels jeweils eines KxK Multiplexers 10p' gekoppelt.
[0088] DieBefehldekodier/Operandenholeinheit 2pq' der Standardprozessorrumpfeinheit 2pq dekodiert beispielsweise einen Befehldes Threads Tt. Der dekodierte Programmbefehldes Threads Tt enthält unter anderem Adressen vonOperanden, die fürdie nachfolgende Befehlsausführungbenötigtwerden. Die adressierten Dateninhalte bzw. Operanden sind in einemfür denThread Tt bereitgestellten Kontextspeicher 3t gespeichert, genauer in der Registerbank 3t' desKontextspeichers 3t . Über einenNx(K·M)Multiplexer 10 werden die Dateninhalte der Operanden ausder Registerbank 3t' zu der Befehldekodier/Operandenholeinheit 2pq' derStandardprozessorrumpfeinheit 2pq übertragen,wobei der Nx(K·M)Multiplexer 10 von der Thread-Kontrolleinheit 4 mittels desMultiplexersteuersignals <t,q>[e] gesteuertwird. Die Multiplexer (10, 11) werden mittelsder Multiplexersteuersignale <t,p,q> derart gesteuert,dass der richtige Kontextspeicher 3t andie entsprechende Pipeline der richtigen Standardprozessorrumpfeinheit 2pq ge schalten wird. Die Befehlsausführungseinheit 2pq'' der Standardprozessorrumpfeinheit 2pq führt dieim Befehl des Threads Tt enthaltene arithmetisch-logischeOperation mittels der aus der Registerbank 3t geholtenOperanden aus.
[0089] Nachdemdie arithmetisch-logische Operation mit den geholten Operanden durchgeführt wurde, wirddas Ergebnis der Operation bzw. Zusatzzeichen bzw. Flags von derZurückschreibeeinheit 2pq''' auf eine Datenleitung 142 gelegt.
[0090] DieselbenDateninhalte werden potentiell im Falle eines Speicherbefehls zusätzlich aufeine Datenleitung 143 gelegt. Die(K·M)Datenleitungen 143 sind für die Kopplungdes Multithread-Prozessors 1 mit dem Datenbus 8 vorgesehen.Die Dateninhalte der (K·M)Ergebnisse der (K·M)Standardprozessorrumpfeinheiten 2pq werden über denDatenbus 8 an einen externen Speicher übertragen.
[0091] Über einen(K·M)xNMultiplexer 11 wird das Ergebnis der Operation des ThreadsTt bzw. Zusatzzeichen bzw. Flags von derDatenleitung 14, genommen, und das Ergebnis der arithmetischlogischen Operationin die Registerbank 3t' des Kontextspeichers 3t und Zusatzzeichen bwz. Flags in dasStatusregister 3t'' desKontextspeichers 3t übertragen.
[0092] DieDateninhalte der N Statusregister 3t''' werdenmittels eines Nx(K·M)Multiplexers 10 an die (K·M) Prozessorkontrolleinheiten 5pq übertragen.Die Prozessorkontrolleinheit 5pq generiertaus den Dateninhalten der Statusregister 3t''' interneSteuersignale, nämlichein internes Steuersignal fürdie Befehldekodier/Operandenholeinheit 12pq', ein internesSteuersignal fürdie Befehlsausführungseinheit 12pq'' und ein internesSteuersignal fürdie Zurückschreibeeinheit 2pq'''.
[0093] DieThread-Kontrolleinheit 4 steuert über die Multiplexersteuersignale <t,p,q>[a]-<t,p,q>[j] dieMultiplexer 10 bzw. 11. Ein Multiplexersteuersignal <t,p,q> gibt an, welcher Thread Tt durch welche Standardprozessorrumpfeinheit 2pq bearbeitet wird, wobei t eine Threadkennzifferfür denjeweiligen Thread T ist, p eine Typenkennziffer für den jeweiligenStandardprozessorrumpfeinheitstypen 2p istund q eine Standardprozessorrumpfeinheitskennziffer für die jeweiligeStandardprozessorrumpfeinheit 2pq ist.
[0094] DerNx(K·M)Multiplexer 10 hat die Funktion, die Daten eines N-kanaligenDatenbusses auf einen (K·M)-kanaligenDatenbus zu legen.
[0095] Der(K·M)xNMultiplexer 11 hat die Funktion, die Daten eines (K·M)-kanaligenDatenbusses auf einen N-kanaligen Datenbus zu legen.
[0096] Die(K·M)internen Ereignissteuersignale 9pq' beinhaltenunter anderem Daten überblockierte Threads T, interne Interrupts, Wartezeiten und Exception-Ereignis-Signaleund stellen diese Daten der Thread-Kontrolleinheit bereit.
[0097] ExterneEreignissteuersignale 9'' werden der Thread-Kontrolleinheit durchexterne Einrichtungen bereitgestellt. Beispiele hierfür sind externeInterrupts, welche von externen Einrichtungen generiert werden.
[0098] 3 zeigtein schematisches Blockschaltbild der Thread-Kontrolleinheit des erfindungsgemäßen heterogenenparallelen Multithread-Prozessors mit geteiltem Kontext.
[0099] DieThread-Kontrolleinheit 4 weist ein Schaltnetzwerk 18,einen Threadkennziffer-Zwischenspeicher 19 und einen Standardprozessorrumpfnummer-Zwischenspeicher 20 auf.
[0100] DerThreadkennziffer-Zwischenspeicher 19 speichert die Threadkennziffernt zwischen. Der Standardprozessorrumpfnummer-Zwischenspeicher 20 speichertdie Standardprozessorrumpfeinheitsnummern pq zwischen, wobei diesejeweils aus der Ty penkennziffer p und der Standardprozessorrumpfeinheitskennzifferq generiert wird.
[0101] Eingangsseitigempfängtdie Thread-Kontrolleinheit 4 die internen Ereignissteuersignale 9pq' (911', ..., 9MK')und die externen Ereignissteuersignale 9''. Dieeingangsseitig empfangenen Steuersignale werden mitunter mittelsdes Schaltnetzwerkes 18, dem Threadkennziffer-Zwischenspeicher 19 unddem Standardprozessorrumpfnummer-Zwischenspeicher 20 verarbeitet.Durch die Verarbeitung werden die Multiplexersteuersignale <t,p,q>[a]-<t,p,q>[j] generiert undzum entsprechenden Taktzyklus an den entsprechenden Nx(K·M) Multiplexer 10 (nichtgezeigt) bzw. an den entsprechenden (K·M)xN Multiplexer 11 (nicht gezeigt)gesendet.
[0102] Obwohldie vorliegende Erfindung vorstehend anhand bevorzugter Ausführungsbeispielebeschrieben wurde, ist sie darauf nicht beschränkt, sondern auf vielfältige Weisemodifiziert.
1 Multithread-Prozessor M Anzahlverschiedener Standardprozessorrumpfein heitstypen(SPRET) p Typenkennziffer;p∊[1, .., M] N Anzahlverschiedener globaler Kontextspeicher t Threadkennziffer;t∊[1, .., N] K Anzahlder Standardprozessorrumpfeinheiten (SPRE) desjeweiligen SPRET q Standardprozessorrumpfeinheitskennziffer; q∊[1,.., K] pq Standardprozessorrumpfeinheitsnummer T Thread 2p Standardprozessorrumpfeinheitstyp (SPRET); p∊[1,..,M] 2pq q-teSPRE des SPRET p; p∊[1, .., M] 2pq' Befehlsdecodier/Operandenholeinheit 2pq'' Befehlsausführungseinheit 2pq''' Zurückschreibeeinheit 3t t-terglobaler Kontextspeicher; t∊[1, .., N] 3t' t-tesProgrammzählregister;t∊[1, .., N] 3t'' t-teRegisterbank; t∊[1, .., N] 3t''' t-tesStatusregister; t∊[1, .., N] 32pt lokalerKontextspeicher fürSPRE 32pt'' lokaleRegisterbank fürSPRE 32pt''' lokaleStatusregister fürSPRE 4 Thread-Kontrolleinheit 5pq Prozessorkontrolleinheit 6t Befehlszwischenspeicher 7 Befehlsspeicher 8 Datenbus 9 Ereignissteuersignale 9pq' internesEreignissteuersignal 9'' externeEreignissteuersignale 10 Nx(K·M) Multiplexer 10p' KxKMultiplexer 11 (K·M)xN Multiplexer 12 internesSteuersignal 12pq' internesSteuersignal fürBefehlsdeco dier/Operandenholeinheit 12pq'' internesSteuersignal für Befehlsausführungseinheit 12pq''' internesSteuersignal fürZurückschreibeeinheit <t,p,q> Multiplexersteuersignal 13 (K·M)-kanaligerDatenbus 14 Datenleitung 15 N-kanaligerDatenbus 16 (K·M)-kanaligerAdressbus 17 Befehlsholeinheit 18 Schaltnetzwerk 19 Threadkennziffer-Zwischenspeicher 20 Standardprozessorrumpfnummer-Zwischenspeicher PMT parallelerMultithread-Prozessor SPRE Standardprozessorrumpfeinheit SPRE' Befehlsdecodier/Operandenholeinheit SPRE'' Befehlsausführungseinheit SPRE''' Zurückschreibeeinheit KS Kontextspeicher PZR Programmzählregister RB Registerbank SR Statusregister TK Thread-Kontrolleinheit PKE Prozessorkontrolleinheit BZS Befehlszwischenspeicher BS Befehlsspeicher DB Datenbus ESS Ereignissteuersignale ESS' internesEreignissteuersignal ESS'' externeEreignissteuersignale NxMMUX NxMMultiplexer MxNMux MxNMultiplexer intSS internesSteuersignal intSS' internesSteuersignal fürBefehlsdeco dier/Operandenholeinheit intSS'' internesSteuersignal fürBefehlsausführungseinheit intSS''' internesSteuersignal fürZurückschreibeeinheit t Threadnummer p Standardprozessorrumpfnummer <t,p> Multiplexersteuersignal DB Datenbus AB Adressbus DL Datenleitung BHE Befehlsholeinheit
权利要求:
Claims (35)
[1] Heterogener paralleler Multithread-Prozessor mitgeteilten Kontexten mit: (a) mehreren (M) parallel verschaltetenStandardprozessorrumpfeinheitstypen (2p ;p∊[1, ..., M]), wobei jeweils jeder Standardprozessorrumpfeinheitstyp(2p ) mindestens eine oder mehrere(K) parallel verschaltete Standardprozessorrumpfeinheiten (2pq ; q∊[1, ..., K]) zur Befehlsausführung vonProgrammbefehlen verschiedener Threads (T) aufweist, wobei für jeden Standardprozessorrumpfeinheitstypen(2p ) N lokale Kontextspeicher (32pt ) vorgesehen sind, die jeweils einenTeil eines aktuellen Prozessor-Zustandes eines Threads zwischenspeichern; (b)mehreren (N) globalen Kontextspeichern (3t ;t∊[1, ..., N]), welche jeweils einen Teil eines aktuellenProzessor-Zustand eines Threads zwischenspeichern; (c) undmit einer Thread-Kontrolleinheit (4), durch die jede Standardprozessorrumpfeinheit(2pq ) an jeden globalen Kontextspeicher(3t ) schaltbar ist.
[2] Multithread-Prozessor nach Anspruch 1, dadurch gekennzeichnet,dass jede Standardprozessorrumpfeinheit (2pq )eine Befehldecodier/Operandenholeinheit (2pq') zur Decodierungeines Programmbefehls und zum Holen innerhalb des Programmbefehlsadressierter Operanden aufweist.
[3] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass jede Standardprozessorrumpfeinheit(2pq ) eine Befehlsausführungseinheit(2pq'') zum Ausführen des decodiertenProgrammbefehls aufweist.
[4] Multithread-Prozessor nach einem der vorstehendenAnsprüche, dadurchgekennzeichnet, dass jede Standardprozessorrumpfeinheit (2pq ) eine Zurückschreibeeinheit (2pq''') zum Zurückschreiben von Operationsergebnissender ausgeführtenProgrammbefehle aufweist.
[5] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass jede Standardprozessorrumpfeinheit(2pq ) mit einer zugehörigen Prozessorkontrolleinheit(5pq ) gekoppelt ist.
[6] Multithread-Prozessor nach einem der vorstehendenAnsprüche, dadurchgekennzeichnet, dass jeder globale Kontextspeicher (3t ) ein Programmzählregister(3t')zum Zwischenspeichern eines Programmzählers; eine Registerbank(3t'') zum Zwischenspeichernvon Operanden und ein Statusregister (3t''')zum Zwischenspeichern von Statusflags aufweist.
[7] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass die Anzahl (K·M) der Standardprozessorrumpfeinheiten(2pq ) kleiner oder gleich der Anzahl(N) der globalen Kontextspeicher (3t )ist.
[8] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass mindestens ein Befehlszwischenspeichervorgesehen ist, welcher oder welche in N, adressierbar durch dieThread-Kontrolleinheit(4), Befehlszwischenspeicher (6t )teilbar ist bzw. sind, wobei jeder der N Befehlszwischenspeicher(6t ) an jede Standardprozessorrumpfeinheit(2pq ) schaltbar ist.
[9] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass die Befehlszwischenspeicher (6t ) zum Auslesen von Programmbefehlendurch die Thread-Kontrolleinheit (4) an einen oder mehrereBefehlsspeicher (7) schaltbar sind, wobei die aus dem Befehlsspeicher(7) ausgelesenen Programmbefehle durch die Programmzähler derProgrammzählregister(3t')der globalen Kontextspeicher (3t )adressiert sind.
[10] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass aus den Befehlszwischenspeichern (6t)gleichzeitig bis zu (K·M)Programmbefehle auslesbar sind.
[11] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass die Standardprozessorrumpfeinheiten(2pq ) die verarbeiteten Daten über einenDatenbus (8) an einen Datenspeicher abgeben.
[12] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass jede Standardprozessorrumpfeinheit(2pq ) die ihr von der Thread-Kontrolleinheit(4) zugeschalteten Programmbefehle sequentiell in einemPipeline-Verfahren bearbeitet.
[13] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass jede Standardprozessorrumpfeinheit(2pq ) einen zugeschalteten Programmbefehl,falls dieser kein Datenzugriffsbe fehls ist, innerhalb einer vorbestimmtenAnzahl von Taktzyklen bearbeitet.
[14] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass die Anzahl der vorgesehenen Befehlszwischenspeicher(6t ) der Anzahl (N) der globalenKontextspeicher (3t ) entspricht,wobei jeder Befehlszwischenspeicher (6t )durch eine entsprechende Threadkennziffer (t) angesteuert wird.
[15] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass die Thread-Kontrolleinheit (4)eingangsseitig Ereignissteuersignale (9) empfängt, interneZuständezwischenspeichert und ausgangsseitig Multiplexersteuersignale (<t,p,q>) bereitstellt.
[16] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass die Ereignissteuersignale (9)interne Ereignissteuersignale (9pq') und externeEreignissteuersignale (9'') umfassen.
[17] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass die internen Ereignissteuersignale(9pq')von den Standardprozessorrumpfeinheiten (2pq )erzeugt werden.
[18] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass die externen Ereignissteuersignale(9'') von externenBaugruppen erzeugt werden.
[19] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass jeder Standardprozessorrumpfeinheitstyp(2p ) ein Teil eines DSP-Prozessors,eines Protokollprozessors oder eines Universal-Prozessors ist.
[20] Multithread-Prozessor nach einem der vorstehendenAnsprüche, dadurchgekennzeichnet, dass die Befehlsausführungseinheit (2pq'') der Standardprozessorrumpfeinheit(2pq ) eine Arithmetisch-Logische-Einheit(ALU) oder eine Adressengeneratoreinheit (AGU) ist.
[21] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass eine Befehlsholeinheit (17)durch einen (K·M)xNMultiplexer (11), N Datenleitungen (144 ),N Befehlszwischenspeichern (6t ),weiteren N Datenleitungen (145 )und einem Nx(K·M)Multiplexer (10) ausgebildet ist.
[22] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass die Befehldecodier/Operandenholeinheit(2pq') denProgrammbefehl decodiert und potentiell innerhalb des Programmbefehlsadressierte Operanden aus den mittels der Multiplexersteuersignale(<t,p,q>) selektierten globalenKontextspeichern (3t ) oder aus demlokalen Kontextspeicher (32pt )zur weiteren Bearbeitung holt.
[23] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass die Thread-Kontrolleinheit (4)ein Schaltnetzwerk (18) aufweist, welches die Thread-Kontrolleinheit(4) in Abhängigkeitder Ereignissteuersignale (9) ansteuert.
[24] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass das Schaltnetzwerk (18) derThread-Kontrolleinheit (4) mindestens einen Threadkennziffer-Zwischenspeicher(19) aufweist, welcher eine Warteschlange abzuarbeitenderThreads (T) speichert, wobei füreinen Thread (T) mindestens die Threadkennziffer (t) und der entsprechendeThreadzustand (ready, waiting) vorgesehen sind.
[25] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass das Schaltnetzwerk (18) derThread-Kontrolleinheit (4) mindestens einen Standardprozessorrumpfnummer-Zwischenspeicher(20) aufweist, welcher die Typenkennziffer (p) und dieStandardprozessorrumpfeinheitskennziffer (q) zwischenspeichert, wobeidie Thread-Kontrolleinheit (9) mittels der Typenkennziffer(p) und der Standardprozessorrumpfeinheitskennziffer (q) eine entsprechende Standardprozessorrumpfeinheit(2pq ) zur Abarbeitung von Programmbefehlenadressiert.
[26] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass die Typenkennziffer (p) und die Standardprozessorrumpfeinheitskennziffer(q) eine Standardprozessorrumpfeinheitsnummer (pq) ausbilden.
[27] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass der Threadkennziffer-Zwischenspeicher(19) und der Standardprozessorrumpfnummer-Zwischenspeicher(20) jeweils als ein FIFO-Speicher (First In – FirstOut) ausgebildet ist.
[28] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass die Threadkennziffer (t), welche einenThread (T) adressiert, in Abhängigkeitder Ereignissteuersignale (9) in dem Threadkennziffer-Zwischenspeicher (19)der Thread-Kontrolleinheit(4) zwischengespeichert wird, falls der Thread (T) vonkeiner Standardprozessorrumpfeinheit (2pq )bearbeitet wird.
[29] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass höchstensN Threadkennziffern (t) in Abhängigkeitder Ereignissteuersignale (9) mittels des Schaltnetzwerkes(18) aus dem Threadkennziffer-Zwischenspeicher (19)zur Bereitstellung von N geholten Threadkennziffer (t) und zur Abarbeitungvon Programmbefehlen der N Threads (T) geholt werden.
[30] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass die Standardprozessorrumpfeinheitsnummer (pq)eine bestimmte Standardprozessorrumpfeinheit (2pq )adressiert und in Abhängigkeitder Ereignissteuersignale (9) in dem Standardprozessorrumpfnummer-Zwischenspeicher(20) zwischengespeichert wird, falls keine Programmbefehleeines Threads (T) von der bestimmten Standardprozessorrumpfeinheit (2pq ) bearbeitet werden.
[31] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass höchstens(K·M)Standardprozessorrumpfeinheitsnummern (pq) in Abhängigkeitder Ereignissteuersignale (9) mittels des Schaltnetzwerkes(18) aus dem Standardprozessorrumpfnummer-Zwischenspeicher(20) geholt werden, sodass Programmbefehle durch die mittelsder Standardprozessorrumpfeinheitsnummer (pq) adressierten Standardprozessorrumpfeinheiten(2pq ) abgearbeitet werden.
[32] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass die Thread-Kontrolleinheit (4)mittels einer aus dem Threadkennziffer-Zwischenspeicher (19)geholten Threadkennziffer (t) und einer aus dem Standardprozessorrumpfnummer-Zwischenspeicher(20) geholten Standardprozessorrumpfeinheitsnummer (pq) einMultiplexersteuersignal (<t,p,q>) generiert und damitdie Multiplexer (10, 11) steuert, sodass die Programmbefehledes mittels der geholten Threadkennziffer (t) referenzierten Threads(T) durch die mittels der geholten Standardprozessorrumpfeinheitsnummer(pq) referenzierten Standardprozessorrumpfeinheit (2pq ) abgearbeitet werden.
[33] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass das Multiplexersteuersignal (<t,p,q>) zum jeweiligen entsprechendenTaktzyklus die Nx(K·M) Multiplexer(10) und die (K·M)xNMultiplexer (11) jeweils dann steuert, wenn sich die Adressedes Programmbefehls bzw. der Programmbefehl des mittels der Threadkennziffer(t) referenzierten Threads (T), welcher durch die mittels der Standardprozessorrumpfeinheitsnummer(pq) referenzierten Standardprozessorrumpfeinheit (2pq ) abgearbeitet wird, an der entsprechendenStelle des Multithread-Prozessors (1) befindet.
[34] Multithread-Prozessor nach einem der vorstehendenAnsprüche, dadurchgekennzeichnet, dass Inhalte eines globalen Kontextspeichers (3t ) von jeder Standardprozessorrumpfeinheit(2pq ) eines jeden Standardprozessorrumpfeinheitstypen(2p ) abarbeitbar sind und dassInhalte eines lokalen Kontextspeichers (32pt )ausschließlichvon den Standardprozessorrumpfeinheiten (2pq )des mit dem lokalen Kontextspeicher (32pt )gekoppelten Standardprozessorrumpfeinheitstypen (2p )abarbeitbar sind.
[35] Multithread-Prozessor nach einem der vorstehendenAnsprüche,dadurch gekennzeichnet, dass ein lokaler Kontextspeicher (32pt ) eine lokale Registerbank (32pt'') zum Zwischenspeichernvon Operanden und ein lokales Statusregister (32pt''') zumZwischenspeichern von Statusflags aufweist.
类似技术:
公开号 | 公开日 | 专利标题
US9990200B2|2018-06-05|Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
US20190034208A1|2019-01-31|Processor with hybrid pipeline capable of operating in out-of-order and in-order modes
US10564975B2|2020-02-18|Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9934072B2|2018-04-03|Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
Sethia et al.2015|Mascar: Speeding up GPU warps by reducing memory pitstops
JP6240964B2|2017-12-06|Apparatus, method, and system
US20160210155A1|2016-07-21|Cache memory apparatus
US10013391B1|2018-07-03|Architecture emulation in a parallel processing environment
US10223125B2|2019-03-05|Linkable issue queue parallel execution slice processing method
US20170308381A1|2017-10-26|Streaming engine with stream metadata saving for context switching
JP6708335B2|2020-06-10|ユーザレベルの分岐及び結合を行うプロセッサ、方法、システム、及び命令
US8677081B1|2014-03-18|Transferring and storing data in multicore and multiprocessor architectures
EP0679991B1|2002-02-06|Datenprozessor für Operanden mit variabler Breite
KR100227278B1|1999-11-01|캐쉬 제어 유닛
US5109495A|1992-04-28|Method and apparatus using a source operand list and a source operand pointer queue between the execution unit and the instruction decoding and operand processing units of a pipelined data processor
US5832297A|1998-11-03|Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations
US6081884A|2000-06-27|Embedding two different instruction sets within a single long instruction word using predecode bits
CA1323938C|1993-11-02|Control of multiple function units with parallel operation in a microcoded execution unit
US8078840B2|2011-12-13|Thread instruction fetch based on prioritized selection from plural round-robin outputs for different thread states
US5933627A|1999-08-03|Thread switch on blocked load or store using instruction thread field
US6205543B1|2001-03-20|Efficient handling of a large register file for context switching
US10387151B2|2019-08-20|Processor and method for tracking progress of gathering/scattering data element pairs in different cache memory banks
US6151662A|2000-11-21|Data transaction typing for improved caching and prefetching characteristics
US6289434B1|2001-09-11|Apparatus and method of implementing systems on silicon using dynamic-adaptive run-time reconfigurable circuits for processing multiple, independent data and control streams of varying rates
US7565510B2|2009-07-21|Microprocessor with a register selectively storing unaligned load instructions and control method thereof
同族专利:
公开号 | 公开日
US20050193186A1|2005-09-01|
DE102004009610B4|2007-08-16|
US7263604B2|2007-08-28|
CN100451949C|2009-01-14|
CN1758213A|2006-04-12|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
2005-09-22| OP8| Request for examination as to paragraph 44 patent law|
2008-02-14| 8364| No opposition during term of opposition|
2019-09-03| R119| Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee|
优先权:
申请号 | 申请日 | 专利标题
DE200410009610|DE102004009610B4|2004-02-27|2004-02-27|Heterogener paralleler Multithread-Prozessormit geteilten Kontexten|DE200410009610| DE102004009610B4|2004-02-27|2004-02-27|Heterogener paralleler Multithread-Prozessormit geteilten Kontexten|
US11/064,795| US7263604B2|2004-02-27|2005-02-24|Heterogeneous parallel multithread processorwith local context memory sets for respective processor type groups and global context memory|
CNB2005100656577A| CN100451949C|2004-02-27|2005-02-28|带有共享内容的异构型并行多线程处理器(hpmt)|
[返回顶部]